package org.dayatang.i18n;

import java.util.Locale;

public abstract class LocaleContextHolder {

	private static final ThreadLocal<Locale> localeContextHolder = new ThreadLocal<Locale>();

	/**
	 * Reset the Locale for the current thread.
	 */
	public static void resetLocale() {
		localeContextHolder.set(null);
	}

	/**
	 * Associate the given Locale with the current thread, <i>not</i> exposing
	 * it as inheritable for child threads.
	 * 
	 * @param locale
	 *            the current Locale, or <code>null</code> to reset the
	 *            thread-bound context
	 */
	public static void setLocale(Locale locale) {
		localeContextHolder.set(locale);
	}

	/**
	 * Return the Locale associated with the current thread, if any.
	 * 
	 * @return the current Locale, or <code>null</code> if none
	 */
	public static Locale getLocale() {
		Locale locale = localeContextHolder.get();
		return (locale != null ? locale : Locale.getDefault());
	}

}
